home *** CD-ROM | disk | FTP | other *** search
/ Aminet 31 / Aminet 31 (1999)(Schatztruhe)[!][Jun 1999].iso / Aminet / dev / obero / OberonAModules.lha / PTReplay.mod < prev    next >
Text File  |  1999-02-26  |  5KB  |  181 lines

  1. <* STANDARD- *>
  2. (* ==================================================================== *)
  3.  
  4. (*
  5. ******* PTReplay/--about-- *******
  6. *
  7. *    $RCSfile: PTReplay.mod $
  8. *   $Revision: 1.3 $
  9. *       $Date: 1995/09/19 17:14:11 $
  10. *     $Author: phf $
  11. *
  12. * Description: OberonA interface to ptreplay.library.
  13. *
  14. *   Copyright: Copyright (c) 1995 by Morten Bjergstrøm [phf].
  15. *              All rights reserved.
  16. *
  17. *     License: This  file  is  freely distributable as long as no
  18. *              money  is  made by distributing it.  If you modify
  19. *              it   please  let  me  know.   You  may  distribute
  20. *              modified versions as long as my original copyright
  21. *              is  respected  and  your modifications are clearly
  22. *              marked  as  such.   It  may  only  be used in non-
  23. *              commercial projects.
  24. *
  25. *      e-mail: p.froehlich@amc.cube.net
  26. *
  27. *     $Source: Users:Homes/phf/Programming/Development/PTReplay/REPOSITORY/PTReplay.mod $
  28. *
  29. **************
  30. *
  31. **************
  32. *)
  33.  
  34. (*
  35. ******* PTReplay/--history-- *******
  36. *
  37. * $Log: PTReplay.mod $
  38. * Revision 1.3  1995/09/19  17:14:11  phf
  39. * Corrected V6 functions, minor changes to Autodocs.
  40. *
  41. * Revision 1.2  1995/09/15  18:18:21  phf
  42. * Adapted to ptreplay.library V6.
  43. *
  44. * Revision 1.1  1995/08/30  06:11:25  phf
  45. * Initial revision
  46. *
  47. **************
  48. *
  49. **************
  50.  
  51. This module was converted by Morten Bjergstrøm to make it work with
  52. Oberon-A 1.6.
  53. EMail: mbjergstroem@hotmail.com
  54. *)
  55.  
  56. (* ==================================================================== *)
  57.  
  58. MODULE PTReplay;
  59.  
  60. (* ==================================================================== *)
  61.  
  62. IMPORT E := Exec, S := SYSTEM, Kernel;
  63.  
  64. (* ==================================================================== *)
  65.  
  66. (*
  67. ******* PTReplay/--background-- *******
  68. *
  69. *   PURPOSE
  70. *
  71. *    This module provides an AmigaOberon interface to the
  72. *    ptreplay.library by Mattias Karlsson / BetaSoft.
  73. *
  74. *   NOTES
  75. *
  76. *    Remember to check "base # NIL" before making any calls
  77. *    to the library.
  78. *
  79. *   SEE ALSO
  80. *
  81. *    ptreplay.doc
  82. *
  83. *   REFERENCES
  84. *
  85. *    Aminet: mus/play/PTReplay#?.lha
  86. *
  87. **************
  88. *
  89. **************
  90. *)
  91.  
  92. (* ==================================================================== *)
  93.  
  94. CONST
  95.   ptReplayName* = "ptreplay.library";
  96.  
  97. TYPE
  98.   ModulePtr* = POINTER [2] TO Module;
  99.   Module* = RECORD [2]
  100.     modName- : E.LSTRPTR; (* "-" means read-only in Oberon-2 *)
  101.     (* The rest is private for now, but more details may be released later. *)
  102.   END;
  103.  
  104. TYPE
  105.   SampleName* = ARRAY 22 OF CHAR;
  106.  
  107.   SamplePtr* = POINTER [2] TO Sample;
  108.   Sample* = RECORD [2]
  109.     name-: SampleName;  (* Null terminated string with samplename *)
  110.     length-: E.UWORD;   (* Sample length in words *)
  111.     fineTune-: E.UBYTE; (* FineTune of sample in lower 4 bits *)
  112.     volume-: E.UBYTE;   (* Volume of sample *)
  113.     repeat-: E.UWORD;   (* Repeat start in number of words *)
  114.     repLen-: E.UWORD;   (* Repeat length in number of words *)
  115.   END;
  116.  
  117. VAR
  118.   base-: E.LibraryPtr;
  119.  
  120. (* ==================================================================== *)
  121.  
  122. PROCEDURE LoadModule*   [base,- 30](name[8]: ARRAY OF CHAR): ModulePtr;
  123. PROCEDURE UnloadModule* [base,- 36](module[8]: ModulePtr);
  124. PROCEDURE Play*         [base,- 42](module[8]: ModulePtr): LONGINT;
  125. PROCEDURE Stop*         [base,- 48](module[8]: ModulePtr): LONGINT;
  126. PROCEDURE Pause*        [base,- 54](module[8]: ModulePtr): LONGINT;
  127. PROCEDURE Resume*       [base,- 60](module[8]: ModulePtr): LONGINT;
  128.  
  129. (* New in V2 *)
  130.  
  131. PROCEDURE Fade*         [base,- 66](module[8]: ModulePtr; speed[0]: E.UBYTE);
  132.  
  133. (* New in V3 *)
  134.  
  135. PROCEDURE SetVolume*    [base,- 72](module[8]: ModulePtr; speed[0]: E.UBYTE);
  136.  
  137. (* New in V4 *)
  138.  
  139. PROCEDURE SongPos*      [base,- 78](module[8]: ModulePtr): E.UBYTE;
  140. PROCEDURE SongLen*      [base,- 84](module[8]: ModulePtr): E.UBYTE;
  141. PROCEDURE SongPattern*  [base,- 90](module[8]: ModulePtr; position[0]: E.UWORD): E.UBYTE;
  142. PROCEDURE PatternPos*   [base,- 96](module[8]: ModulePtr): E.UBYTE;
  143. PROCEDURE PatternData*  [base,-102](module[8]: ModulePtr; pattern[0],row[1]: E.UBYTE): E.APTR;
  144. PROCEDURE InstallBits*  [base,-108](module[8]: ModulePtr; restart[0],nextPattern[1],nextRow[2],fade[3]: E.UBYTE);
  145. PROCEDURE SetupMod*     [base,-114](moduleFile[8]: E.APTR): ModulePtr;
  146. PROCEDURE FreeMod*      [base,-120](module[8]: ModulePtr);
  147. PROCEDURE StartFade*    [base,-126](module[8]: ModulePtr; speed[0]: E.UBYTE);
  148.  
  149. (* New in V5 *)
  150.  
  151. PROCEDURE OnChannel*    [base,-132](module[8]: ModulePtr; channels[0]: SET);
  152. PROCEDURE OffChannel*   [base,-138](module[8]: ModulePtr; channels[0]: SET);
  153. PROCEDURE SetPos*       [base,-144](module[8]: ModulePtr; position[0]: E.UBYTE);
  154. PROCEDURE SetPri*       [base,-150](priority[0]: E.BYTE);
  155. PROCEDURE GetPri*       [base,-156](): E.BYTE;
  156.  
  157. (* New in V6 *)
  158.  
  159. PROCEDURE GetChannel*   [base,-162](): E.UBYTE;
  160. PROCEDURE GetSample*    [base,-168](module[8]: ModulePtr; number[0]: E.UBYTE): SamplePtr;
  161.  
  162. (* ==================================================================== *)
  163.  
  164.  
  165. PROCEDURE* [0] CloseLib (VAR rc : LONGINT);
  166.  
  167. BEGIN (* CloseLib *)
  168.   IF base # NIL THEN E.CloseLibrary (base) END
  169. END CloseLib;
  170.  
  171.  
  172. BEGIN
  173.  
  174.   base := E.OpenLibrary (ptReplayName, 0);
  175.  
  176.   IF base # NIL THEN Kernel.SetCleanup (CloseLib) END;
  177.  
  178. END PTReplay.
  179.  
  180. (* ==================================================================== *)
  181.